1
第三課導論:解決非線性分類問題
EvoClass-AI002第3講
00:00

我們正在超越線性模型的局限,這些模型在處理無法以直線分離的資料時會遇到困難。今天,我們將運用 PyTorch 流程來建立一個 深度神經網路(DNN),能夠學習 複雜且非線性的決策邊界,這對於現實世界的分類任務至關重要。

1. 可視化非線性資料的必要性

我們的第一步是建立一個具有挑戰性的合成資料集,例如兩月形分布,以直觀地展示為何簡單的線性模型會失敗。此設定迫使我們使用深度架構來近似分隔各類別所需的複雜曲線。

資料特性

  • 資料結構: 合成資料特徵(例如,1000 個樣本、2 維特徵,即 $1000 \times 2$)。
  • 輸出類型: 個單一機率值,通常為 torch.float32,用於表示類別歸屬。
  • 目標: 建立一個 彎曲的決策邊界,透過層疊式運算實現。
非線性激活函數的力量
深度神經網路的核心原理,在於透過像 ReLU 之類的函數,在隱藏層中引入非線性。若無此機制,無論層數多深,堆疊層次最終僅等同於一個大型線性模型。
data_setup.py
終端機bash — classification-env
> 已準備就緒。點選「執行」開始運行。
>
張量檢視器即時

執行程式碼以檢視活躍的張量
問題 1
ReLU 激活函數在隱藏層中的主要用途是什麼?
引入非線性,使深度架構能建模曲線
加速矩陣乘法
確保輸出介於 0 和 1 之間
將層輸出標準化至平均值為零
問題 2
二元分類任務中,輸出層所需的激活函數是 輸出層嗎?
Sigmoid
Softmax
ReLU
問題 3
使用 Sigmoid 輸出的二元分類問題,對應的損失函數是哪一個?
二元交叉熵損失(BCE)
均方誤差(MSE)
交叉熵損失
挑戰:設計核心架構
整合架構組件以實現非線性學習。
您必須為兩月形問題建立一個 nn.Module。輸入特徵:2。輸出類別:1(機率)。
步驟 1
描述此 DNN 中單一隱藏層的計算流程。
解答:
輸入 $\to$ 線性層(權重矩陣)$\to$ ReLU 激活 $\to$ 輸出至下一層。
步驟 2
若輸入形狀為 $(N, 2)$ 且使用 BCE 損失,最後一層的大小應為多少?
解答:
輸出層的大小必須為 $(N, 1)$,以便每筆樣本產生單一機率分數,與標籤形狀相符。